package com.cskaoyan._12io._03test;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

/**
 * @author Macro_Ray
 * @since 2024/3/26 20:08
 */
// 拷贝一个文件夹，考虑子文件夹
public class Test1 {
    public static void main(String[] args) throws IOException {
        // 1.创建对象表示数据源
        File src = new File("E:\\Userdata\\Desktop\\JAVA\\Learn\\basic-code\\Day19_Code\\src");
        // 2.创建对象表示目的地
        File dest = new File("E:\\Userdata\\Desktop\\dest");

        // 3.调用方法实现拷贝
        copyFolder(src, dest);
    }

    // 4.实现拷贝方法
    private static void copyFolder(File src, File dest) throws IOException {
        // 判断目的地是否存在，不存在则创建
        if (!dest.exists()) {
            dest.mkdirs();
        }
        // 递归
        // 1.进入数据源
        File[] files = src.listFiles();
        // 2.遍历数组
        for (File file : files) {
            // 3.判断是文件，拷贝
            if (file.isFile()) {
                // 拷贝的时候，要从文件拷贝到文件里面
                FileInputStream fis = new FileInputStream(file);
                FileOutputStream fos = new FileOutputStream(new File(dest, file.getName()));
                byte[] bytes = new byte[1024];
                int len = 0;
                while ((len = fis.read(bytes)) != -1) {
                    fos.write(bytes, 0, len);
                }
                fos.close();
                fis.close();
            } else {
                // 4.判断是文件夹，递归调用
                copyFolder(file, new File(dest, file.getName()));

            }

        }

    }
}
